#!/usr/bin/env -S python3 -u

import limbo
from antithesis.random import get_random

con = limbo.connect("bank_test.db")
cur = con.cursor()

# drop accounts table if it exists and create a new table
cur.execute(f'''
    DROP TABLE IF EXISTS accounts;
''')

cur.execute(f'''
    CREATE TABLE accounts (
        account_id INTEGER PRIMARY KEY AUTOINCREMENT,
        balance REAL NOT NULL DEFAULT 0.0
    );
''')

# randomly create up to 100 accounts with a balance up to 1e9
total = 0
num_accts = get_random() % 100 + 1
for i in range(num_accts):
    bal = get_random() % 1e9
    total += bal
    cur.execute(f'''
        INSERT INTO accounts (balance)
        VALUES ({bal})
    ''')

# drop initial_state table if it exists and create a new table
cur.execute(f'''
    DROP TABLE IF EXISTS initial_state;
''')
cur.execute(f'''
    CREATE TABLE initial_state (
        num_accts INTEGER,
        total REAL
    );
''')

# store initial state in the table
cur.execute(f'''
    INSERT INTO initial_state (num_accts, total)
    VALUES ({num_accts}, {total})
''')